package com.ihrm.company.controller;

import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.ihrm.company.mapper.ModuleMapper;
import com.ihrm.company.module.Module;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;


@RestController
@RequestMapping("/premission")
public class PermissionController {
    @Autowired
    private ModuleMapper moduleDao;


    @RequestMapping("/getMenuTree" )
    public List<Module> getMenuTree() {
        // 查询所有的节点
        List<Module> menusBase = moduleDao.selectByPid("4");
        // 查询所有的非根节点
        List<Module> menuLNotBase = moduleDao.selectAllNotBase();
        for (Module menu : menusBase) {
            List<Module> menus = iterateMenus(menuLNotBase, menu.getId());
            menu.setChildren(menus);
        }
        return menusBase;
    }


    /**
     * 多级菜单查询方法
     *
     * @param menuVoList 不包含最高层次菜单的菜单集合
     * @param pid        父类id
     * @return
     */
    public List<Module> iterateMenus(List<Module> menuVoList, String pid) {
        List<Module> result = new ArrayList<Module>();
        for (Module menu : menuVoList) {
            //获取菜单的id
            String menuid = menu.getId();
            //获取菜单的父id
            String parentid = menu.getParentId();
            if (StringUtils.isNotBlank(parentid)) {
                if (parentid.equals(pid)) {
                    //递归查询当前子菜单的子菜单
                    List<Module> iterateMenu = iterateMenus(menuVoList, menuid);
                    menu.setChildren(iterateMenu);
                    result.add(menu);
                }
            }
        }
        return result;
    }


}
